package com.BaoHua.demo.threadDemo;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class SyncExample {

	@SuppressWarnings("unused")
	private static Map<String,Object> cache = new ConcurrentHashMap<>();
	
	//修饰一个代码块
	public void test1() {
		synchronized(this) {
			for(int i=0;i<10;i++) {
				System.out.println(i);
			}
		}
	}
	
	//修饰一个方法
	public synchronized void test2() {
		for(int i=0;i<10;i++) {
			System.out.println(i);
		}
	}
	
	//修饰一个类
	public static void test3() {
		synchronized(SyncExample.class) {
			for(int i=0;i<10;i++) {
				System.out.println(i);
			}
		}
	}
	
	//修饰一个静态方法
	public static synchronized void test4() {
		for(int i=0;i<10;i++) {
			System.out.println(i);
		}
	}
	
	//(懒汉模式)私有构造函数
	private SyncExample() {
		
	}
	
	//单例对象 volatile 加上双重检测机制
	private volatile static SyncExample instance = null;
	
	//静态工程方法
	public static SyncExample getInstance() {
		if(instance==null) {
			synchronized (SyncExample.class) {
				if(instance==null) {
					instance = new SyncExample();
				}
			}
		}
		return instance;
	}
	
	public static void main(String[] args) {
		
	}
}
